<?php


namespace app\index\controller;
use app\BaseController;

//本控制器用于测试文件上传
class Upload extends BaseController
{
    public function index()
    {
        //表单代码
        //<form action="/index/upload" enctype="multipart/form-data" method="post">
        //<input type="file" name="image" /> <br>
        //<input type="submit" value="上传" />
        //</form>

        //多文件上传
        //<form action="/index/index/uploadAll" enctype="multipart/form-data" method="post">
        //<input type="file" name="image[]" /> <br>
        //<input type="file" name="image[]" /> <br>
        //<input type="file" name="image[]" /> <br>
        //<input type="submit" value="上传" />
        //</form>
    }

    public function upload(){
        // 获取表单上传文件 例如上传了001.jpg
        //$file = request()->file('image');
        // 上传到本地服务器
        //$savename = \think\facade\Filesystem::putFile( 'topic', $file); //路径为 runtime/storage/topic/
        //如果需要文件可访问或下载
        //$savename = \think\facade\Filesystem::disk('public')->putFile( 'topic', $file); //第三个参数可以指定命名规则，如md5
        //规则	描述
        //date	根据日期和微秒数生成
        //md5	对文件使用md5_file散列生成
        //sha1	对文件使用sha1_file散列生成

        //指定文件名
        //$savename = \think\facade\Filesystem::putFileAs( 'topic', $file,'abc.jpg');
        //dump($savename);
    }

    public function uploadAll(){
        //上传验证
        //验证参数	说明
        //fileSize	上传文件的最大字节
        //fileExt	文件后缀，多个用逗号分割或者数组
        //fileMime	文件MIME类型，多个用逗号分割或者数组
        //image	    验证图像文件的尺寸和类型

        // 获取表单上传文件
        $files = request()->file();
        try {
            validate(['image'=>'fileSize:10240|fileExt:jpg|image:200,200,jpg'])
                ->check($files);
            $savename = [];
            foreach($files as $file) {
                $savename[] = \think\facade\Filesystem::putFile( 'topic', $file);
                // 获取上传文件的hash散列值
                echo $file->md5();
                echo $file->sha1();
                //或
                echo $file->hash('sha1');
                echo $file->hash('md5');
            }
        } catch (\think\exception\ValidateException $e) {
            echo $e->getMessage();
        }

    }

}